Beacon
    energy_usage = Energy
    energy_source = EnergySource
    base_picture = Sprite
    animation = Animation
    animation_shadow = Animation
    supply_area_distance = double
    radius_visualisation_picture = Sprite
    allowed_effects = table of allowed module effects (as strings), default is all
    num_module_slots = int32_t, um, is there a reason this is not unsigned?
    distribution_effectivity = double

errors:
    animation_shadow and animation_shadow.frames ~= animation.frames
        throws error("Beacon prototype: Animation shadow must have the same frame count as animation.")
